<?php
namespace server;

interface UserInterface
{

    const EVENT_USER_LOGIN_LOG = 'user.event_user_login_log';

    /**
     * 登录
     *
     * @param array $params [
     *                      '',
     *                      'password'
     *                      'app_id'
     *                      ]
     * @param bool  $isApi  是否api
     *
     * @return mixed
     */
    public function login(array $params, $isApi = false);

    /**
     * 生成token
     *
     * @param $user
     * @param $appId
     *
     * @return array
     * @throws \yii\base\Exception
     */
    public function makeToken($user, $appId);

    /**
     * 注册
     *
     * @param array $params [
     *                      'username',
     *                      'password',
     *                      'mobile',
     *                      'gender',
     *                      'email',
     *                      'face',
     *                      ]
     *
     * @param bool  $isApi  是否api
     *
     * @return mixed
     */
    public function register(array $params, $isApi = false);


    public function addUser(array $params, $isApi = false);


    public function editUser(array $params, $isApi = false);

    /**
     * 获取单个用户的数据
     *
     * @return array
     */
    public function getUserInfo();

    /**
     * 获得用户列表
     *
     * @param array $params [
     *                      'username',
     *                      'password',
     *                      'mobile',
     *                      'gender',
     *                      'email',
     *                      'created_at',
     *                      'updated_at',
     *                      ]
     *
     * @param bool  $isAll
     *
     * @return array
     */
    public function getUserList(array $params, $isAll = false);

    /**
     *
     * 刷新token
     *
     * @param $refreshToken
     *
     * @return array
     */
    public function refreshToken($refreshToken);

    /**
     * 忘记密码
     *
     * @param array $params
     *
     * @return mixed
     * @throws \yii\base\Exception
     */
    public function forgetPassword(array $params);

    /**
     * 修改密码
     *
     * @param $newPassword
     *
     * @return mixed
     */
    public function changePassword(array $params);

    /**
     * 重置密码
     *
     * @param $user_id
     *
     * @return mixed
     */
    public function resetPassword($user_id);
}
